// <com.woyouqiu.Copyright>
// --------------------------------------------------------------
// <copyright>上海有求网络科技有限公司 2015</copyright>
// <Solution>MyCompany.MyProject</Solution>
// <Project>MyCompany.MyProject.Web.Host</Project>
// <FileName>DynamicApiDocumentFilter.cs</FileName>
// <CreateTime>2017-04-21 23:57</CreateTime>
// <Author>何苗</Author>
// <Email>hemiao@woyouqiu.com</Email>
// <log date="2017-04-21 23:57" version="00001">创建</log>
// --------------------------------------------------------------
// </com.woyouqiu.Copyright>

using System.Collections.Generic;
using Castle.Compatibility;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace Vecen.BangChuang.Web.Host.Swagger {

    /// <summary>
    /// 动态API文档信息
    /// </summary>
    public class DynamicApiDocumentFilter: IDocumentFilter {

        /// <summary>
        /// 
        /// </summary>
        /// <param name="swaggerDoc"></param>
        /// <param name="context"></param>
        public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context) {

            Dictionary<string, string> tags = new Dictionary<string, string>();
            tags.Add("Product", "商品操作");
            tags.Add("ProductCategory", "商品分类操作");
            tags.Add("TokenAuth", "用户认证");
            tags.Add("Account", "用户帐号");
            tags.Add("Address", "地址区域");
            tags.Add("City", "城市信息");
            tags.Add("Order", "订单操作");
            tags.Add("SearchRecord", "搜索记录");
            tags.Add("ShoppingCart", "购物车");
            tags.Add("User", "用户信息");
            tags.Add("Favorite", "收藏夹");
            tags.Add("Setting", "参数设置");
            tags.Add("UserAddress", "用户收货地址");
            tags.Add("Agent", "代理人相关操作");
            tags.Add("Class", "微课堂操作");
            tags.Add("File", "文件操作");
            tags.Add("Session", "回话信息");
            tags.Add("Role", "角色操作");
            tags.Add("Tenant", "租户信息");
            tags.Add("Wallet", "钱包操作");
            tags.Add("Promotion", "推广信息");
            swaggerDoc.Tags = new List<Tag>();
            tags.ForEach(c => {
                swaggerDoc.Tags.Add(new Tag() {Name = c.Key, Description = c.Value});
            });
        }
    }
}